home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ahoy 1985 February
/
Ahoy_Magazine_85-02_1985_Double_L.d64
/
sprite cntrlr
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
141 lines
1 rem=-=-=-=-=-=-=-=-=-=-=-=
2 rem= sprite controller =
3 rem=-=-=-=-=-=-=-=-=-=-=-=
4 rem
5 rem sprite data must already
6 rem be in memory.
9 rem
10 def fnsb(n)=peek(mm) or 2^n
20 def fnrb(n)=peek(mm) and (255-2^n)
30 def fngb(n)=-((pm and 2^n)>0)
40 vv=53248 :rem vic address
490 end
495 rem=-=-=-=-=-=-=-=-=-=-=-=
496 rem= set sprite pointer =
497 rem= input: sn,bk =
498 rem=-=-=-=-=-=-=-=-=-=-=-=
500 poke 2040+sn,bk
510 return
595 rem=-=-=-=-=-=-=-=-=-=-=-=
596 rem= set x coordinate =
597 rem= input: sn,xx =
598 rem=-=-=-=-=-=-=-=-=-=-=-=
600 mm=vv+16 : x0=xx
610 if xx<256 then poke mm,fnrb(sn):goto 630
620 x0=xx-256 : poke mm,fnsb(sn)
630 poke vv+sn*2,x0
640 return
695 rem=-=-=-=-=-=-=-=-=-=-=-=
696 rem= set y coordinate =
697 rem= input: sn,yy =
698 rem=-=-=-=-=-=-=-=-=-=-=-=
700 poke vv+sn*2+1,yy
710 return
795 rem=-=-=-=-=-=-=-=-=-=-=-=
796 rem= set color =
797 rem= input: sn,cc =
798 rem=-=-=-=-=-=-=-=-=-=-=-=
800 poke vv+39+sn,cc
810 return
895 rem=-=-=-=-=-=-=-=-=-=-=-=
896 rem= turn sprite on =
897 rem= input: sn =
898 rem=-=-=-=-=-=-=-=-=-=-=-=
900 mm=vv+21
910 poke mm,fnsb(sn)
920 return
995 rem=-=-=-=-=-=-=-=-=-=-=-=
996 rem= turn sprite off =
997 rem= input: sn =
998 rem=-=-=-=-=-=-=-=-=-=-=-=
1000 mm=vv+21
1010 poke mm,fnrb(sn)
1020 return
1095 rem=-=-=-=-=-=-=-=-=-=-=-=
1096 rem= x expansion on =
1097 rem= input: sn =
1098 rem=-=-=-=-=-=-=-=-=-=-=-=
1100 mm=vv+29 :poke mm,fnsb(sn)
1110 return
1195 rem=-=-=-=-=-=-=-=-=-=-=
1196 rem= x expansion off =
1197 rem= input: sn =
1198 rem=-=-=-=-=-=-=-=-=-=-=
1200 mm=vv+29 :poke mm,fnrb(sn)
1210 return
1295 rem=-=-=-=-=-=-=-=-=-=-=
1296 rem= y expansion on =
1297 rem=-=-=-=-=-=-=-=-=-=-=
1300 mm=vv+23 :poke mm,fnsb(sn)
1310 return
1395 rem=-=-=-=-=-=-=-=-=-=-=
1396 rem= y expansion off =
1397 rem= input: sn =
1398 rem=-=-=-=-=-=-=-=-=-=-=
1400 mm=vv+23 :poke mm,fnrb(sn)
1410 return
1495 rem=-=-=-=-=-=-=-=-=-=-=
1496 rem= multi-color mode =
1497 rem= input: sn =
1498 rem=-=-=-=-=-=-=-=-=-=-=
1500 mm=vv+28 :poke mm,fnsb(sn)
1510 return
1595 rem=-=-=-=-=-=-=-=-=-=-=
1596 rem= hi-res mode =
1597 rem= input: sn =
1598 rem=-=-=-=-=-=-=-=-=-=-=
1600 mm=vv+28 :poke mm,fnrb(sn)
1610 return
1695 rem-=-=-=-=-=-=-=-=-=-=-=-=
1696 rem define mc colors 1&2 =
1697 rem input: c1,c2 =
1698 rem-=-=-=-=-=-=-=-=-=-=-=-=
1700 poke vv+37,c1:poke vv+38,c2
1710 return
1794 rem-=-=-=-=-=-=-=-=-=-=-=-=
1795 rem any spr/spr collision =
1796 rem input: none =
1797 rem output: pm=0 if none =
1798 rem-=-=-=-=-=-=-=-=-=-=-=-=
1800 pm=peek(vv+30)
1810 return
1820 if ca and cb then sflg=-1
1830 return
1894 rem-=-=-=-=-=-=-=-=-=-=-=-=
1895 rem any spr/bkgd collision=
1896 rem input: none =
1897 rem output: pm=0 if none =
1898 rem-=-=-=-=-=-=-=-=-=-=-=-=
1900 pm=peek(vv+31)
1910 return
1994 rem-=-=-=-=-=-=-=-=-=-=-=-=
1995 rem spr priority < bkgd =
1996 rem input: sn =
1997 rem-=-=-=-=-=-=-=-=-=-=-=-=
2000 mm=vv+27 : poke mm,fnsb(sn)
2010 return
2094 rem-=-=-=-=-=-=-=-=-=-=-=-=
2095 rem spr priority > bkgd =
2096 rem input: sn =
2097 rem-=-=-=-=-=-=-=-=-=-=-=-=
2100 mm=vv+27 : poke mm,fnrb(sn)
2110 return
2194 rem-=-=-=-=-=-=-=-=-=-=-=-=
2195 rem spr-a//spr-b collide? =
2196 rem input: sa,sb =
2197 rem output:sflg=0 if not =
2198 rem-=-=-=-=-=-=-=-=-=-=-=-=
2200 pm=peek(vv+30) : sflg=0
2210 ca=fngb(sa) : cb=fngb(sb)
2220 if ca and cb then sflg=-1
2230 return
2294 rem-=-=-=-=-=-=-=-=-=-=-=-=
2295 rem spr-n//bkgd collide? =
2296 rem input: sn =
2297 rem output:bflg=0 if not =
2298 rem-=-=-=-=-=-=-=-=-=-=-=-=
2300 pm=peek(vv+31)
2310 ca=fngb(sn) : bflg=0
2320 if ca then bflg=-1
2330 return